package br.edu.ufabc.gtrnp.helppo.business;

import static br.edu.ufabc.gtrnp.helppo.util.RPCOpenSimParameters.ARQUIVO_SALA_AULA;
import static br.edu.ufabc.gtrnp.helppo.util.RPCOpenSimParameters.ARQUIVO_SALA_REUNIAO;
import static br.edu.ufabc.gtrnp.helppo.util.RPCOpenSimParameters.REGION_NAME;

import java.io.IOException;

import br.edu.ufabc.gtrnp.helppo.business.exception.CargaOarRPCException;
import br.edu.ufabc.gtrnp.helppo.business.exception.CriacaoRegiaoRPCException;
import br.edu.ufabc.gtrnp.helppo.business.exception.NenhumEspacoDisponivelException;
import br.edu.ufabc.gtrnp.helppo.persistence.entity.EspacoUtilizado;
import br.edu.ufabc.gtrnp.helppo.persistence.entity.Usuario;
import br.edu.ufabc.gtrnp.helppo.util.HelppoProperties;

public class AmbienteEstaticoBusiness {
	public static AmbienteEstaticoBusiness business = new AmbienteEstaticoBusiness();

	private AmbienteEstaticoBusiness() {
	}

	public static AmbienteEstaticoBusiness getInstance() {
		return business;
	}

	public String criaSalaDeAula(Usuario usuario) throws NenhumEspacoDisponivelException,
			IOException, CriacaoRegiaoRPCException, CargaOarRPCException {
		return criaAmbiente(ARQUIVO_SALA_AULA,usuario);
	}

	public String criaSalaDeReuniao(Usuario usuario) throws NenhumEspacoDisponivelException,
			IOException, CriacaoRegiaoRPCException, CargaOarRPCException {
		return criaAmbiente(ARQUIVO_SALA_REUNIAO, usuario);
	}

	private String criaAmbiente(String ambiente, Usuario usuario) throws NenhumEspacoDisponivelException, IOException, CriacaoRegiaoRPCException, CargaOarRPCException{
		EspacoUtilizado espaco = EspacoDisponivelBusiness.getInstance()
				.proximo();
		String nomeRegiao = HelppoProperties.getInstance().getString(
				REGION_NAME)
				+ espaco.getId();
		
		RegiaoBusiness.getInstance().criaRegiao(espaco, nomeRegiao, usuario);
		ArquivoOARBusiness.getInstance().carregar(nomeRegiao, ambiente);
		return nomeRegiao;
	}
}
